home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of MacTutor - S…e Code for Volumes 1 to 5
/
The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin
/
Source Code
/
#06 (Feb 86)
/
pascal 2.2
/
Random.Sound_to_Clip
< prev
next >
Wrap
Text File
|
1985-12-20
|
2KB
|
75 lines
program Random_Number_FFWave;
uses
sane;
const
WTSize = 22200;{ 370*60=one second of sound }
type
ptr = ^integer;
Handle = ^ptr;
MySynthH = ^MySynthP;
MySynthP = ^MySynthRec;
mySynthRec = record
mode : integer;
rate : fixed;
WaveBytes : packed array[0..22199] of char;{ WTSize bytes }
end;
var
waveH : MySynthH;
n, i, ticks, retraces : integer;
procedure Wave_to_Clip (waveH : MySynthH;
name : str255);
var
TheType, llength, lll : longint;
str : str255;
{ The Hlock that is predefined does not work!!! }
procedure Hlock (H : Handle);
var
regs : array[0..12] of longint;
begin
regs[0] := ord(h);{ set A0 }
Generic($A029, regs);
end;
begin
lll := LinlineF($A9FC);{ ZeroScrap }
str := 'WAVE';
BlockMove(@str[1], @TheType, 4);{ TheType:='WAVE' }
llength := GetHandleSize(waveH);
Hlock(pointer(ord(waveH)));
lll := LinlineF($A9FE, llength, theType, waveH^);{ PutScrap}
Hunlock(pointer(ord(waveH)));
llength := Length(name);
str := 'TEXT';
BlockMove(@str[1], @TheType, 4);{ TheType:='TEXT' }
lll := LinlineF($A9FE, llength, theType, @name[1]);{ PutScrap}
end;
begin
waveH := NewHandle(WTSize + 6);{ size of mySynthRec }
waveH^^.mode := FFMode;
waveH^^.rate := FixRatio(1, 1);
ShowDrawing;
textmode(srcCopy);
n := 128;
for ticks := 0 to 59 do{ 60 ticks }
begin
moveto(0, 256 - n);
for retraces := 0 to 369 do{ 370 retraces }
begin
i := retraces + ticks * 370;
n := random mod 256;
waveH^^.WaveBytes[i] := chr(n);
lineto(retraces, 256 - n);
end;{ of retraces loop }
DrawString(Stringof(ticks));
end;{ of ticks loop }
Wave_to_Clip(waveH, 'Random number Waveform');
DisposeHandle(waveH);
end.